package zw_1_100.zw_17_电话号码的字母组合;


import java.util.ArrayList;
import java.util.List;

class Solution {

    public static void main(String[] args) {
        String digits = "23";
        List<String> lists = letterCombinations(digits);
        lists.forEach(System.out::print);
    }

    public static List<String> letterCombinations(String digits) {
        if (digits == null || digits.length() == 0) {
            return new ArrayList<String>();
        }
        String[] map = { " ", "*", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };
        List<String> res = new ArrayList<>();

        res.add("");
        for (int i = 0; i < digits.length(); i++) {
            String letters = map[digits.charAt(i) - '0'];
            int levelSize = res.size();
            for (int j = 0; j < levelSize; j++) {
                String tmp = res.remove(0);
                for (int k = 0; k < letters.length(); k++) {
                    res.add(tmp + letters.charAt(k));
                }
            }
        }
        return res;
    }




//    private String[] letterMap = {
//            " ",    //0
//            "",     //1
//            "abc",  //2
//            "def",  //3
//            "ghi",  //4
//            "jkl",  //5
//            "mno",  //6
//            "pqrs", //7
//            "tuv",  //8
//            "wxyz"  //9
//    };
//
//    private ArrayList<String> res;
//
//    public List<String> letterCombinations(String digits) {
//        res = new ArrayList<String>();
//        if (digits.equals("")) return res;
//        findCombination(digits, 0, "");
//        return res;
//    }
//
//    private void findCombination(String digits, int index, String s) {
//        if (index == digits.length()) {
//            res.add(s);
//            return;
//        }
//        Character c = digits.charAt(index);
//        String letters = letterMap[c - '0'];
//        for (int i = 0; i < letters.length(); i++) {
//            findCombination(digits, index + 1, s + letters.charAt(i));
//        }
//        return;
//    }

}